package txm;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;

import org.jbarcode.JBarcode;
import org.jbarcode.encode.Code128Encoder;
import org.jbarcode.encode.EAN13Encoder;
import org.jbarcode.paint.BaseLineTextPainter;
import org.jbarcode.paint.EAN13TextPainter;
import org.jbarcode.paint.WideRatioCodedPainter;
import org.jbarcode.paint.WidthCodedPainter;
import org.jbarcode.util.ImageUtil;

/**
 * 条形码
 * @author hai
 *
 */
public class TXM {

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		/**
		 * JBarcode:参数1、条形码类型，参数2、 输出条码，参数3、输出文本
		 */
		JBarcode localJBarcode = new JBarcode(EAN13Encoder.getInstance(),
				WidthCodedPainter.getInstance(), EAN13TextPainter.getInstance());
		// JBarcode localJBarcode = new JBarcode(Code11Encoder.getInstance(),
		// WidthCodedPainter.getInstance(), BaseLineTextPainter.getInstance());
		/**
		 * 前缀码是用来标识国家或地区的代码,如 00-09代表美国、加拿大,45、49代表 日本,69代表中国大陆
		 * 1-3位：共3位，对应该条码的693，是中国的国家代码之一。（690--695都是中国大陆的代码，由国际上分配）
		 * 4-8位：共5位，对应该条码的69838，代表着生产厂商代码，由厂商申请，国家分配
		 * 9-12位：共4位，对应该条码的0001，代表着厂内商品代码，由厂商自行确定
		 * 第13位：共1位，对应该条码的3，是校验码，依据一定的算法，由前面12位数字计算而得到。
		 */
		String str = "123453232323"; // 条形码一般由前缀部分、制造厂商代码、商品代码和校验码组成
		BufferedImage localBufferedImage = localJBarcode.createBarcode(str);
		saveToFile(localBufferedImage, "EAN13.gif", "gif");
		localJBarcode.setEncoder(Code128Encoder.getInstance());
		localJBarcode.setPainter(WideRatioCodedPainter.getInstance());
		localJBarcode.setTextPainter(BaseLineTextPainter.getInstance());
		localJBarcode.setShowText(true);// 显示图片下字符串内容
		localJBarcode.setCheckDigit(false);// 不生成检查码
		localJBarcode.setShowCheckDigit(true);// 显示字符串内容中是否显示检查码内容
		str = "JBARCODE-123";
		localBufferedImage = localJBarcode.createBarcode(str);
		saveToFile(localBufferedImage, "Code128.png", "png");
	}
	  /**
	   * 把图形画到指定的位置
	   * @param paramBufferedImage  图形
	   * @param paramString1  图形名称
	   * @param paramString2 图形格式
	   */
	  static void saveToFile(BufferedImage paramBufferedImage, String paramString1, String paramString2)  
	  {  
	    try  
	    {  
	      FileOutputStream localFileOutputStream = new FileOutputStream("e:/img/" + paramString1);  
	      ImageUtil.encodeAndWrite(paramBufferedImage, paramString2, localFileOutputStream, 96, 96);  
	      localFileOutputStream.close();  
	    }  
	    catch (Exception localException)  
	    {  
	      localException.printStackTrace();  
	    }  
	  }  
}
